<!doctype html>
<html lang="en">
    <head>
        <!-- Google tag (gtag.js) -->
        <script
            async
            src="https://www.googletagmanager.com/gtag/js?id=G-YN74PZK7ZQ"
        ></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag() {
                dataLayer.push(arguments);
            }
            gtag("js", new Date());

            gtag("config", "G-YN74PZK7ZQ");
        </script>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>awesome-sphinxdoc</title>
        <meta
            name="description"
            content="A curated collection of valuable resources for Sphinx, the powerful and flexible documentation generator."
        />
        <meta
            property="og:url"
            content="https://ygzgxyz.github.io/awesome-sphinxdoc"
        />
        <meta property="og:type" content="website" />
        <meta property="og:title" content="awesome-sphinxdoc" />
        <meta
            property="og:description"
            content="A curated collection of valuable resources for Sphinx, the powerful and flexible documentation generator."
        />
        <meta
            property="og:image"
            content="https://opengraph.b-cdn.net/production/images/d9b9fa56-a66d-4528-954d-2459c08e3f6e.png?token=5ODSS1ab65K2KEtREjaXukpyRZb9cGSZdMsyXBrjpVk&height=630&width=1200&expires=33295824563"
        />
        <meta name="twitter:card" content="summary_large_image" />
        <meta property="twitter:domain" content="ygzgxyz.github.io" />
        <meta
            property="twitter:url"
            content="https://ygzgxyz.github.io/awesome-sphinxdoc"
        />
        <meta name="twitter:title" content="awesome-sphinxdoc" />
        <meta
            name="twitter:description"
            content="A curated collection of valuable resources for Sphinx, the powerful and flexible documentation generator."
        />
        <meta
            name="twitter:image"
            content="https://opengraph.b-cdn.net/production/images/d9b9fa56-a66d-4528-954d-2459c08e3f6e.png?token=5ODSS1ab65K2KEtREjaXukpyRZb9cGSZdMsyXBrjpVk&height=630&width=1200&expires=33295824563"
        />
        <link
            rel="icon"
            href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20640%22%3E%3C%21--%21Font%20Awesome%20Free%20v7.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M415.9%20274.5C428.1%20271.2%20440.9%20277%20446.4%20288.3L465%20325.9C475.3%20327.3%20485.4%20330.1%20494.9%20334L529.9%20310.7C540.4%20303.7%20554.3%20305.1%20563.2%20314L582.4%20333.2C591.3%20342.1%20592.7%20356.1%20585.7%20366.5L562.4%20401.4C564.3%20406.1%20566%20411%20567.4%20416.1C568.8%20421.2%20569.7%20426.2%20570.4%20431.3L608.1%20449.9C619.4%20455.5%20625.2%20468.3%20621.9%20480.4L614.9%20506.6C611.6%20518.7%20600.3%20526.9%20587.7%20526.1L545.7%20523.4C539.4%20531.5%20532.1%20539%20523.8%20545.4L526.5%20587.3C527.3%20599.9%20519.1%20611.3%20507%20614.5L480.8%20621.5C468.6%20624.8%20455.9%20619%20450.3%20607.7L431.7%20570.1C421.4%20568.7%20411.3%20565.9%20401.8%20562L366.8%20585.3C356.3%20592.3%20342.4%20590.9%20333.5%20582L314.3%20562.8C305.4%20553.9%20304%20540%20311%20529.5L334.3%20494.5C332.4%20489.8%20330.7%20484.9%20329.3%20479.8C327.9%20474.7%20327%20469.6%20326.3%20464.6L288.6%20446C277.3%20440.4%20271.6%20427.6%20274.8%20415.5L281.8%20389.3C285.1%20377.2%20296.4%20369%20309%20369.8L350.9%20372.5C357.2%20364.4%20364.5%20356.9%20372.8%20350.5L370.1%20308.7C369.3%20296.1%20377.5%20284.7%20389.6%20281.5L415.8%20274.5zM448.4%20404C424.1%20404%20404.4%20423.7%20404.5%20448.1C404.5%20472.4%20424.2%20492%20448.5%20492C472.8%20492%20492.5%20472.3%20492.5%20448C492.4%20423.6%20472.7%20404%20448.4%20404zM224.9%2018.5L251.1%2025.5C263.2%2028.8%20271.4%2040.2%20270.6%2052.7L267.9%2094.5C276.2%20100.9%20283.5%20108.3%20289.8%20116.5L331.8%20113.8C344.3%20113%20355.7%20121.2%20359%20133.3L366%20159.5C369.2%20171.6%20363.5%20184.4%20352.2%20190L314.5%20208.6C313.8%20213.7%20312.8%20218.8%20311.5%20223.8C310.2%20228.8%20308.4%20233.8%20306.5%20238.5L329.8%20273.5C336.8%20284%20335.4%20297.9%20326.5%20306.8L307.3%20326C298.4%20334.9%20284.5%20336.3%20274%20329.3L239%20306C229.5%20309.9%20219.4%20312.7%20209.1%20314.1L190.5%20351.7C184.9%20363%20172.1%20368.7%20160%20365.5L133.8%20358.5C121.6%20355.2%20113.5%20343.8%20114.3%20331.3L117%20289.4C108.7%20283%20101.4%20275.6%2095.1%20267.4L53.1%20270.1C40.6%20270.9%2029.2%20262.7%2025.9%20250.6L18.9%20224.4C15.7%20212.3%2021.4%20199.5%2032.7%20193.9L70.4%20175.3C71.1%20170.2%2072.1%20165.2%2073.4%20160.1C74.8%20155%2076.4%20150.1%2078.4%20145.4L55.1%20110.5C48.1%20100%2049.5%2086.1%2058.4%2077.2L77.6%2058C86.5%2049.1%20100.4%2047.7%20110.9%2054.7L145.9%2078C155.4%2074.1%20165.5%2071.3%20175.8%2069.9L194.4%2032.3C200%2021%20212.7%2015.3%20224.9%2018.5zM192.4%20148C168.1%20148%20148.4%20167.7%20148.4%20192C148.4%20216.3%20168.1%20236%20192.4%20236C216.7%20236%20236.4%20216.3%20236.4%20192C236.4%20167.7%20216.7%20148%20192.4%20148z%22%20/%3E%3C/svg%3E"
        />
        <link
            rel="stylesheet"
            href="https://cdn.simplecss.org/simple.min.css"
        />
        <style>
            .tags {
                margin-left: 1rem;
            }
            .link-title {
                font-weight: bold;
            }
            .tag-button {
                background-color: #f0f0f0;
                border: 1px solid #ccc;
                border-radius: 4px;
                color: #333;
                cursor: pointer;
                display: inline-block;
                font-size: 0.8rem;
                margin-right: 0.5rem;
                margin-bottom: 0.5rem;
                padding: 0.2rem 0.5rem;
                text-decoration: none;
            }
            .tag-button.active {
                background-color: #007bff;
                color: white;
                border-color: #007bff;
            }
            #global-tags-container {
                display: flex;
                flex-wrap: wrap;
                margin-bottom: 1rem;
            }
        </style>
    </head>
    <body>
        <header>
            <h1>
                awesome-sphinxdoc
                <a
                    href="https://github.com/ygzgxyz/awesome-sphinxdoc"
                    target="_blank"
                >
                    <img
                        alt="GitHub Repo stars"
                        src="https://img.shields.io/github/stars/ygzgxyz/awesome-sphinxdoc"
                /></a>
            </h1>
            <div id="language-selector">
                <a href="#" data-lang="ko" class="lang-button">한국어</a> |
                <a href="#" data-lang="en" class="lang-button">English</a> |
                <a href="#" data-lang="ja" class="lang-button">日本語</a> |
                <a href="#" data-lang="zh" class="lang-button">中文</a>
            </div>
            <div class="lang-content" lang="en">
                <p>
                    A curated list of awesome resources for
                    <a href="https://www.sphinx-doc.org/">Sphinx</a>.
                </p>
            </div>
            <div class="lang-content" lang="ko" style="display: none">
                <p>
                    <a href="https://www.sphinx-doc.org/">Sphinx</a>를 위한
                    엄선된 멋진 리소스 목록입니다.
                </p>
            </div>
            <div class="lang-content" lang="ja" style="display: none">
                <p>
                    <a href="https://www.sphinx-doc.org/">Sphinx</a
                    >の素晴らしいリソースの厳選されたリストです。
                </p>
            </div>
            <div class="lang-content" lang="zh" style="display: none">
                <p>
                    <a href="https://www.sphinx-doc.org/">Sphinx</a
                    >的精选优质资源列表。
                </p>
            </div>
        </header>
        <main>
            <div class="main-content" lang="en">
                <p>
                    Sphinx is a powerful and flexible documentation generator
                    that assists in effectively managing and publishing
                    documentation for various projects. This page presents a
                    curated list of resources designed to help you leverage
                    Sphinx to its fullest potential. Explore official
                    documentation, tutorials, extensions, themes, and other
                    valuable assets to significantly enhance your documentation
                    workflow.
                </p>
                <p class="notice">
                    <b>Can't find the link you're looking for?</b><br />
                    Please add a link! You can create a pull request on GitHub
                    <a href="https://github.com/ygzgxyz/awesome-sphinxdoc"
                        >ygzgxyz/awesome-sphinxdoc</a
                    >. Your contributions are always welcome!
                </p>
                <p>
                    This project is inspired by the various
                    <a href="https://github.com/sindresorhus/awesome"
                        >awesome lists</a
                    >
                    in the community.<br />
                    Licensed under a
                    <a href="https://creativecommons.org/licenses/by-sa/4.0/"
                        >Creative Commons Attribution-ShareAlike 4.0
                        International License</a
                    >.
                </p>
            </div>
            <div class="main-content" lang="ko" style="display: none">
                <p>
                    Sphinx는 다양한 프로젝트의 문서를 효과적으로 관리하고
                    게시하는 데 도움을 주는 강력하고 유연한 문서 생성기입니다.
                    이 페이지는 Sphinx를 최대한 활용하는 데 도움이 되도록 엄선된
                    리소스 목록을 제공합니다. 공식 문서, 튜토리얼, 확장 기능,
                    테마 및 기타 유용한 자료를 탐색하여 문서화 작업을 크게
                    향상시키세요.
                </p>
                <p class="notice">
                    <b>찾으시는 링크가 없으신가요?</b><br />
                    링크를 추가해주세요! GitHub에서 풀 리퀘스트를 생성할 수
                    있습니다
                    <a href="https://github.com/ygzgxyz/awesome-sphinxdoc"
                        >ygzgxyz/awesome-sphinxdoc</a
                    >. 여러분의 기여는 언제나 환영합니다!
                </p>
                <p>
                    이 프로젝트는 커뮤니티의 다양한
                    <a href="https://github.com/sindresorhus/awesome"
                        >awesome lists</a
                    >
                    에서 영감을 받았습니다.<br />
                    <a href="https://creativecommons.org/licenses/by-sa/4.0/"
                        >크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0
                        국제 라이선스</a
                    >
                    하에 라이선스가 부여됩니다。
                </p>
            </div>
            <div class="main-content" lang="ja" style="display: none">
                <p>
                    Sphinxは、さまざまなプロジェクトのドキュメントを効果的に管理および公開するのに役立つ、強力で柔軟なドキュメントジェネレーターです。このページでは、Sphinxを最大限に活用するのに役立つ厳選されたリソースのリストを紹介します。公式ドキュメント、チュートリアル、拡張機能、テーマ、その他の貴重なアセットを探索して、ドキュメント作成ワークフローを大幅に強化してください。
                </p>
                <p class="notice">
                    <b>お探しのリンクが見つかりませんか？</b><br />
                    リンクを追加してください！GitHubでプルリクエストを作成できます
                    <a href="https://github.com/ygzgxyz/awesome-sphinxdoc"
                        >ygzgxyz/awesome-sphinxdoc</a
                    >。皆様のご貢献を歓迎いたします！
                </p>
                <p>
                    このプロジェクトは、コミュニティの様々な
                    <a href="https://github.com/sindresorhus/awesome"
                        >awesome lists</a
                    >
                    に触発されています。<br />
                    <a href="https://creativecommons.org/licenses/by-sa/4.0/"
                        >クリエイティブ・コモンズ 表示-継承 4.0 国際
                        ライセンス</a
                    >
                    の下でライセンスされています。
                </p>
            </div>
            <div class="main-content" lang="zh" style="display: none">
                <p>
                    Sphinx
                    是一个功能强大且灵活的文档生成器，可帮助有效管理和发布各种项目的文档。此页面提供了精选资源列表，旨在帮助您充分利用
                    Sphinx
                    的潜力。探索官方文档、教程、扩展、主题和其他有价值的资产，以显著增强您的文档工作流程。
                </p>
                <p class="notice">
                    <b>找不到您要找的链接？</b><br />
                    请添加链接！您可以在 GitHub 上创建拉取请求
                    <a href="https://github.com/ygzgxyz/awesome-sphinxdoc"
                        >ygzgxyz/awesome-sphinxdoc</a
                    >。欢迎您的贡献！
                </p>
                <p>
                    本项目受到社区中各种
                    <a href="https://github.com/sindresorhus/awesome"
                        >awesome lists</a
                    >
                    的启发。<br />
                    根据
                    <a href="https://creativecommons.org/licenses/by-sa/4.0/"
                        >知识共享署名-相同方式共享 4.0 国际许可协议</a
                    >
                    获得许可。
                </p>
            </div>
            <div id="global-tags-container"></div>
            <ul>
                {% for link in links %}
                <li data-tags="{{ link.tags | join(', ') }}">
                    <a
                        href="{{ link.link | safe }}"
                        target="_blank"
                        class="link-title"
                        >{{ link.name | safe }}</a
                    >: {{ link.description | safe }}
                    <span class="tags">
                        {% for tag in link.tags %}
                        <a href="#" class="tag-button">{{ tag | safe }}</a>
                        {% endfor %}
                    </span>
                </li>
                {% endfor %}
            </ul>
        </main>

        <script>
            document.addEventListener("DOMContentLoaded", () => {
                const globalTagsContainer = document.getElementById(
                    "global-tags-container",
                );
                const mainContent = document.querySelector("main");
                const links = Array.from(mainContent.querySelectorAll("li"));

                // Create a single URLSearchParams instance
                const urlParams = new URLSearchParams(window.location.search);

                // Get all unique tags
                const uniqueTags = [
                    ...new Set(
                        links.flatMap((link) => link.dataset.tags.split(", ")),
                    ),
                ].sort();

                // Create global tag buttons
                let tagButtonsHTML =
                    '<a href="#" class="tag-button active">All</a>';
                uniqueTags.forEach((tag) => {
                    if (tag) {
                        tagButtonsHTML += `<a href="#" class="tag-button">${tag}</a>`;
                    }
                });
                globalTagsContainer.innerHTML = tagButtonsHTML;

                const allTagButtons = Array.from(
                    document.querySelectorAll(".tag-button"),
                );

                function setActiveTag(selectedTag) {
                    allTagButtons.forEach((button) => {
                        if (button.textContent.trim() === selectedTag) {
                            button.classList.add("active");
                        } else {
                            button.classList.remove("active");
                        }
                    });
                }

                function filterLinks(selectedTag) {
                    links.forEach((link) => {
                        const linkTags = link.dataset.tags.split(", ");
                        if (
                            selectedTag === "All" ||
                            linkTags.includes(selectedTag)
                        ) {
                            link.style.display = "";
                        } else {
                            link.style.display = "none";
                        }
                    });
                    // Update URL parameter for tag
                    const url = new URL(window.location);
                    if (selectedTag === "All") {
                        url.searchParams.delete("tag");
                    } else {
                        url.searchParams.set("tag", selectedTag);
                    }
                    window.history.pushState({}, "", url);
                }

                allTagButtons.forEach((button) => {
                    button.addEventListener("click", (event) => {
                        event.preventDefault();
                        const selectedTag = button.textContent.trim();
                        setActiveTag(selectedTag);
                        filterLinks(selectedTag);
                    });
                });

                // Initial tag detection from URL
                const urlTag = urlParams.get("tag");
                if (urlTag) {
                    setActiveTag(urlTag);
                    filterLinks(urlTag);
                } else {
                    // If no tag in URL, ensure 'All' is active and filter accordingly
                    setActiveTag("All");
                    filterLinks("All");
                }

                // Language selection logic
                const langButtons = document.querySelectorAll(
                    "#language-selector .lang-button",
                );
                const langContents = document.querySelectorAll(".lang-content");

                function setLanguage(lang) {
                    langContents.forEach((content) => {
                        if (content.getAttribute("lang") === lang) {
                            content.style.display = "block";
                        } else {
                            content.style.display = "none";
                        }
                    });
                    document
                        .querySelectorAll(".main-content")
                        .forEach((content) => {
                            if (content.getAttribute("lang") === lang) {
                                content.style.display = "block";
                            } else {
                                content.style.display = "none";
                            }
                        });
                    langButtons.forEach((button) => {
                        if (button.getAttribute("data-lang") === lang) {
                            button.classList.add("active");
                        } else {
                            button.classList.remove("active");
                        }
                    });
                    // Update URL parameter
                    const url = new URL(window.location);
                    url.searchParams.set("lang", lang);
                    window.history.pushState({}, "", url);
                }

                langButtons.forEach((button) => {
                    button.addEventListener("click", (event) => {
                        event.preventDefault();
                        const selectedLang =
                            event.target.getAttribute("data-lang");
                        setLanguage(selectedLang);
                    });
                });

                // Initial language detection
                const urlLang = urlParams.get("lang");
                if (urlLang) {
                    setLanguage(urlLang);
                } else {
                    const browserLang = navigator.language.split("-")[0]; // e.g., "en-US" -> "en"
                    if (["en", "ko", "ja", "zh"].includes(browserLang)) {
                        setLanguage(browserLang);
                    } else {
                        setLanguage("en"); // Default to English
                    }
                }
            });
        </script>
    </body>
</html>
<!-- Template version: 2023-10-27-01 -->
